home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / var / lib / dpkg / info / libnss-mdns.postinst < prev    next >
Text File  |  2009-06-24  |  4KB  |  96 lines

  1. #!/bin/sh
  2. set -e
  3. # Automatically added by dh_makeshlibs
  4. if [ "$1" = "configure" ]; then
  5.     ldconfig
  6. fi
  7. # End automatically added section
  8.  
  9.  
  10. log() {
  11.     echo "$*"
  12. }
  13.  
  14. # try to insert mdns entries to the "hosts" line in /etc/nsswitch.conf to
  15. # automatically enable nss-mdns support; do not change the configuration if the
  16. # "hosts" line already references some mdns lookups
  17. insert_mdns() {
  18.     log "Checking NSS setup..."
  19.     # abort if /etc/nsswitch.conf does not exist
  20.     if ! [ -e /etc/nsswitch.conf ]; then
  21.         log "Could not find /etc/nsswitch.conf."
  22.         return
  23.     fi
  24.     perl -i -pe '
  25.         sub insert {
  26.             # this also splits on tab
  27.             my @bits=split(" ", shift);
  28.             # do not break configuration if the "hosts" line already references
  29.             # mdns
  30.             if (grep { $_ eq "mdns4_minimal" || $_ eq "mdns4"
  31.                 || $_ eq "mdns" || $_ eq "mdns_minimal" 
  32.                 || $_ eq "mdns6" || $_ eq "mdns6_minimal"} @bits) {
  33.                 return join " ", @bits;
  34.             }
  35.             # change "dns" into "mdns4_minimal [NOTFOUND=return] dns mdns4"
  36.             return join " ", map {
  37.                 $_ eq "dns" ? ("mdns4_minimal","[NOTFOUND=return]",$_,"mdns4") : $_
  38.             } @bits;
  39.         }
  40.         s/^(hosts:\s+)(.*)/$1.insert($2)/e;
  41.     ' /etc/nsswitch.conf
  42. }
  43.  
  44. action="$1"
  45.  
  46. if [ configure = "$action" ]; then
  47.     if [ -z "$2" ]; then
  48.         log "First installation detected..."
  49.         # first install: setup the recommended configuration (unless
  50.         # nsswitch.conf already contains mdns entries)
  51.         insert_mdns
  52.     else
  53.         # upgrade
  54.         version="$2"
  55.  
  56.         if dpkg --compare-versions "$version" lt 0.8-4.2; then
  57.             log "Upgrade from unconfigured version detected."
  58.             # versions prior to 0.8-4.2 did not setup nss-mdns automatically,
  59.             # do it now
  60.             insert_mdns
  61.         elif dpkg --compare-versions "$version" lt 0.8-6; then
  62.             log "Already configured version detected, skipping NSS setup."
  63.             # versions 0.8-4.2 and 0.8-5 installed the same configuration as
  64.             # this postinst, so nothing needs to be done
  65.             :
  66.         elif dpkg --compare-versions "$version" lt 0.8-6.1; then
  67.             log "Upgrade from possibly broken version detected."
  68.             if [ -e /etc/nsswitch.conf ]; then
  69.                 # version 0.8-6 broke the configuration in multiple ways: 1)
  70.                 # for systems which were upgraded from 0.8-4.2 or 0.8-5 to
  71.                 # 0.8-6, the hosts line will look like:
  72.                 #    hosts:          files  dns 
  73.                 # cleanup from this specially formatted line into the default
  74.                 # one:
  75.                 sed -i \
  76.                     's/^hosts:          files  dns $/hosts:          files dns/' \
  77.                     /etc/nsswitch.conf
  78.                 # 2) for systems which re-installed 0.8-6 or installed 0.8-6 as the
  79.                 # first version, the hosts line will look like:
  80.                 #    hosts:          files mdns_minimal dns mdns
  81.                 # cleanup from this specially formatted line into the default one:
  82.                 sed -i -r \
  83.                     '/^hosts:/s/\<mdns_minimal dns mdns\>/dns/' \
  84.                     /etc/nsswitch.conf
  85.             fi
  86.  
  87.             insert_mdns
  88.         fi
  89.  
  90.         # transition from Dapper, which had wrong default 'files dns mdns'
  91.     if dpkg --compare-versions "$2" le 0.8-6ubuntu2; then
  92.                 perl -i -pe 's/^(hosts:\s*)files\s+dns\s+mdns\s*$/$1files mdns4_minimal [NOTFOUND=return] dns mdns4\n/' /etc/nsswitch.conf
  93.         fi
  94.     fi
  95. fi
  96.